<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 实例对象都可以通过constructor属性获取他的构造函数
        //     原因:构造函数的原型中,有这个属性

        // 定义构造函数
        function Star(name, age) {
            this.name = name;
            this.age = age;
        }
        Star.prototype.sing = function () {
            console.log('唱歌');
        }
        //创建实例
        const s1 = new Star('刘德华', 58)
        const s2 = new Star('张学友', 59)
        console.log(s1.constructor);
        console.log(s2.constructor);
        // 构造函数的原型中,有这个constructor;
        console.log(Star.prototype.constructor);
        console.log(Star.prototype);



        // construtor应用
        // function Star(name,age){
        //     this.name = name;
        //     this.age = age;
        // }

        // //假如别人给了一个对象
        // let obj = {
        //     sing:function(){console.log('唱歌')},
        //     dance:function(){console.log('跳舞')}
        // }

        // // 直接用对象覆盖调用原型对象
        // Star.prototype = obj; //构造函数被0bj中的覆盖为了object
        // // 修改构造函数为Star
        // Star.prototype.constructor = Star;

        // // 创建
        // const s1 = new Star('刘德华',58)
        // s1.sing();
        // s1.dance();
        // console.log(s1.constructor);

    </script>
</body>

</html>